package com.xinkao.example.service.impl;

import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.xinkao.example.dao.DictValueDao;
import com.xinkao.example.service.DictService;
import com.xinkao.example.util.CommonUtil;
import com.xinkao.example.util.constants.ErrorEnum;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.List;

/**
 * @author zhoujing
 * @date 2021/3/11 9:17
 * @description 字典相关
 */
@Service
public class DictServiceImpl implements DictService {

    @Resource
    private DictValueDao dictValueDao;

    /**
     * 保存
     * @param user
     * @param jsonObject
     * @return
     */
    @Override
    public JSONObject saveDict(JSONObject user, JSONObject jsonObject){
        //登录用户验证
        if (null == user) {
            return CommonUtil.errorJson(ErrorEnum.E_20011);
        }
        JSONObject jb = new JSONObject();
        jb.put("dictKey",jsonObject.getString("dictKey"));
        jb.put("name",jsonObject.getString("name"));

        String dictId = jsonObject.getString("id");
        if(StrUtil.isNotEmpty(dictId)){
            jsonObject.put("updateBy",user.getString("userName"));
            jb.put("id",jsonObject.getString("id"));
        }
        jsonObject.put("createBy",user.getString("userName"));
        jsonObject.put("isDefault","0");
        jsonObject.put("status","1");
        int count = dictValueDao.countByTypeAndName(jb);
        if(count >0 ){
            return CommonUtil.errorJson(ErrorEnum.E_10014);
        }

        if(StrUtil.isNotEmpty(dictId)){
            dictValueDao.updateDictValue(jsonObject);
        }else{
            dictValueDao.saveDictValue(jsonObject);
        }
        return CommonUtil.successJson();
    }

    /**
     * 字典列表
     * @param jsonObject
     * @return
     */
    @Override
    public JSONObject listDict(JSONObject jsonObject){
        CommonUtil.fillPageParam(jsonObject);
        int count = dictValueDao.countDictValue(jsonObject);
        List<JSONObject> infoList = dictValueDao.listDictValue(jsonObject);
        return CommonUtil.successPage(jsonObject, infoList, count);
    }

    /**
     * 删除
     * @param jsonObject
     * @return
     */
    @Override
    public JSONObject deleteDict(JSONObject jsonObject){
        dictValueDao.deleteDictValue(jsonObject);
       return CommonUtil.successJson();
    }

    /**
     * 查字典类别
     * @return
     */
    @Override
    public JSONObject listDictKey(){
       List<JSONObject> list = dictValueDao.listDictKey();
       return CommonUtil.successJson(list);
    }
}
